#include <iostream>
#include <list>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <string>
#include "list.hpp"

using std::cout;
using std::endl;

void print(const LL::list<int>& lt)
{
	for (auto& e : lt)
	{
		cout << e << " ";
	}
	cout << endl;
}

//int main()
//{
//	LL::list<int> lt;
//	cout << (lt.begin() == lt.end()) << endl;
//	cout << (lt.rend() == lt.rbegin()) << endl;
//
//	lt.push_front(1);
//	lt.push_front(3);
//	lt.clear();
//	lt.push_front(3);
//	lt.push_front(5);
//	lt.push_front(5);
//	lt.pop_back();
//	lt.pop_back();
//	print(lt);
//	lt.pop_back();
//	lt.push_front(5);
//	lt.push_front(7);
//	print(lt);
//
//	LL::list<int> tmp = lt;
//	tmp.push_back(2);
//	print(tmp);
//	tmp.clear();
//	print(tmp);
//
//	print(lt);
//	LL::list<int> lt1 = std::move(lt);
//	print(lt1);
//	//print(lt);
//
//	return 0;
//}

int main()
{
	LL::list< std::pair<std::string, char> > mylist;

	mylist.emplace(mylist.begin(), "xxxxx", 'x');
	mylist.emplace(mylist.begin(), "tttttt", 'y');
	mylist.push_back({ "11111", 'z' });
	mylist.push_front({ "11111", 'z'});
	mylist.insert(mylist.end(), { "xyz", '*' });
	mylist.insert(++mylist.begin(), { "pxy", '-' });

	std::cout << "mylist contains:\n";
	for (auto& x : mylist)
		std::cout << " (" << x.first << "," << x.second << ")" << endl;
	cout << endl;

	std::cout << '\n';

	auto rit = mylist.rbegin();
	while (rit != mylist.rend())
	{
		std::cout << " (" << rit->first << "," << rit->second << ")" << endl;
		++rit;
	}

	return 0;
}